coding test [ Programmers / CodingTest / Python ] 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. 예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다. 만들고자 하는 이름 name이 매개변수로 주어질 때, 이름에 대해 조이스틱 조작 횟수의 최솟값을 return 하도록 solution 함수를 ... coding testprogrammerspythoncoding test [ Programmers / CodingTest / Python ] 줄 서는 방법 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람이 있다면 다음과 같이 6개의 방법이 있습니다. 사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 return하는 solution 함수를 완... coding testprogrammerspythoncoding test 코딩테스트 공부 5 신규아이디 추천 python 3 문제를 읽으면서 딱 정규표현식을 써야겠구나 라고 생각했다. 하지만 정규표현식 사용법이 잘 기억나지 않아서 다른방법이 없을까 하고 한참 고민을 했다. 이것 저것 찾아보다가 String.punctuation 이라는걸 알게 되었다. 정규 표현식 없이도 특수문자들을 걸러낼 수 있었다. 연속된 "."을 제거하는 코드는 answer.replace("..", ".") 를 ... coding testprogrammersalgorithmalgorithm 코딩 테스트 준비-숫자 문자열과 영단어 는 2021년 카카오 채용연계형 인턴십 기출 문제로 프로그래머스 기준으로 레벨 1이었고, 지난번 풀었던 레벨 1 문제 보다는 훨씬 수월하였다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5s... bruteforcecoding testprogrammersJavakakakoJava 코딩 테스트 준비-단어변환 코딩 테스트를 치면서 실무에서 자주 사용하는 해쉬, 문자열 관련 문제들은 비교적 수월하게 풀었지만, 내가 실무에서 자주 사용할 일이 없는 탐색이나 그래프 문제가 나오면 항상 고전을 하였다. 오늘 정리할 코딩 테스트 문제는 프로그래머스의 '단어 변환' 문제로 dfs를 활용해 풀 수 있는 레벨 3 문제였다. 개인적으로 재귀함수를 효과적으로 사용할 수 있다면 어렵지 않게 풀 수 있는 문제였다고 생... JavaDFScoding testprogrammersDFS [ Programmers / CodingTest / Python ] 괄호 변환 '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열이라고 부릅니다. 예를 들어, "(()))("와 같은 문자열은 "균형잡힌 괄호 문자열" 이지만 "올바른 괄호 문자열"은 아닙니다. 반면에 "(())()"와 같은 문자열은 "균형잡힌 괄호 문자열" 이면서 동시에 "올바른 괄호 문자열" 입니다. '(' 와 ')' 로만 이루어진... programmerscoding testpythoncoding test programmers 코딩테스트 : 핸드폰 번호 가리기 핸드폰 번호 가리기 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 phone_number는 길이 4 이상, 20이하인 문자열입니다. 첫번째 풀이... JavaScriptcoding test코딩코딩테스트programmersprogrammers test테스트javascript testJavaScript Dijkstra - BOK 1753 : 최단 경로 정의 하나의 정점에서 나머지 모든 정점까지의 최단 거리를 찾는 알고리즘 이다. 모든 정점의 최단 거리를 구하는 플로이드 워셜 알고리즘과 다른 알고리즘 이다. 예제 출처 : 예제의 입력을 그래프로 표현한 것 입니다. 시작점 1에서 다른 정점들 까지의 거리 중 최단거리에 있는 정점을 찾는 문제입니다. 풀이 1. 시작점 1번에서 직접 갈 수 있는 정점은 2번과 3번입니다. 그리고 문제의 조건에서 ... coding testalgorithmalgorithm [BOJ] 5582 - 공통 부분 문자열 ✔ Problem - - DP 🔰 Level solved.ac 기준 골드5 ❔ How dynamic programming 문제이다. 문자열을 비교하면서, 만약 같은 문자열이 등장하면 길이를 더해줘야 한다. 2차원 배열을 이용해서, 문자열의 인덱스와 배열 인덱스를 이용한다. 같은 문자열이 나오면 해당 dp배열의 오른쪽 아래 대각선 자리에 왼쪽 위 대각선 값에 1을 더한 값을 넣어준다. 문자열의... DP백준coding test골드골드5algorithmboj공통 부분 문자열5582코딩테스트알고리즘5582 [ Programmers / CodingTest / Python ] 크레인 인형뽑기 게임 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음 그림은 [1번, 5번, 3번] 위치에서 순서대로 인형을 집어 올려 바구... python프로그래머스programmers코딩 테스트coding testcoding test [프로그래머스/파이썬] (동적계획법(Dynamic Programming)) 도둑질 문제 설명 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다. 각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요. 제한사항 이 마을에... dynamic programming코테pythonprogrammers프로그래머스카카오코딩테스트코딩파이썬coding test카카오코테코딩테스트도둑질coding test [ Programmers / CodingTest / Python ] 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이... python프로그래머스programmers코딩 테스트coding testcoding test [BOJ] 11726 - 2xn 타일링 Java 풀이 가로의 길이가 n인 타일은 n - 1의 타일짜리에 세로 타일 하나를 붙인 것이거나 n - 2 타일짜리에 가로 타일 2개를 붙인 것과 같기 때문이었다. 즉, 이전에 풀었던 부분문제의 결과를 다시 풀어야 하고, 이것은 메모이제이션 기법으로 저장해두고 꺼내서 쓰면 효율을 높일 수 있다. 이러한 문제들은 전형적인 다이나믹 프로그래밍 문제의 특징이라고 볼 수 있다. 또한 TMI인데, 다이나믹 프로그래... dynamic programmingbojJavaalgorithmcoding testJava LeetCode : Maximum Product Subarray (Medium) 풀이 날짜 : 2021-06-18 풀이 소요 시간 : 30m LeetCode URL : 앞서 풀이한 'Maximum Subarray' 문제와 동일하게 Dynamic Programming 방식을 활용하여 문제를 해결할 수 있습니다. 누적합을 구하는 문제와 달리, 음수 여부에 따라 누적 곱이 달라질 수 있으므로, i번째 Subarray까지 최대/최소 누적 곱을 유지하는 리스트를 생성하여, 비교를... coding testcoding test [ Programmers / CodingTest / Python ] 로또의 최고 순위와 최저 순위 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0, 0, 31 25라고 가정해... python프로그래머스programmers코딩 테스트coding testcoding test [프로그래머스/파이썬] (깊이/너비 우선 탐색(DFS/BFS)) 네트워크 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 ... 코테pythonBFSDFSprogrammers프로그래머스네트워크카카오코딩테스트파이썬coding test카카오코테코딩테스트코딩BFS [BOJ] 15729 - 방탈출 ✔ Problem - - DP 🔰 Level solved.ac 기준 실버1 ❔ How dynamic programming 문제이다. 내가 버튼을 누른 횟수를 출력하면 된다. 앞에서부터 정답과 나의 빈 답지를 비교하며, 눌러 나간다. 먼저 정답 버튼과 길이가 같은 0으로 채워진 새로운 배열을 만들고, 정답과 비교하면서 버튼을 누를 때마다 오른쪽 2개의 버튼도 갱신해주면서 하나씩 눌러나가면 된다... 백준dynamic programmingDPboj15729방탈출실버1실버algorithmcoding test알고리즘코딩테스트15729 2019 카카오 개발자 겨울 인턴십 [크레인 인형뽑기 게임] 모든 인형은 1 x 1 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음 그림은 [1번, 5번, 3번] 위치에서 순서대로 인형을 집어 올려 바구니에... Javaprogrammerskakaocoding testJava
[ Programmers / CodingTest / Python ] 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. 예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다. 만들고자 하는 이름 name이 매개변수로 주어질 때, 이름에 대해 조이스틱 조작 횟수의 최솟값을 return 하도록 solution 함수를 ... coding testprogrammerspythoncoding test [ Programmers / CodingTest / Python ] 줄 서는 방법 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람이 있다면 다음과 같이 6개의 방법이 있습니다. 사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 return하는 solution 함수를 완... coding testprogrammerspythoncoding test 코딩테스트 공부 5 신규아이디 추천 python 3 문제를 읽으면서 딱 정규표현식을 써야겠구나 라고 생각했다. 하지만 정규표현식 사용법이 잘 기억나지 않아서 다른방법이 없을까 하고 한참 고민을 했다. 이것 저것 찾아보다가 String.punctuation 이라는걸 알게 되었다. 정규 표현식 없이도 특수문자들을 걸러낼 수 있었다. 연속된 "."을 제거하는 코드는 answer.replace("..", ".") 를 ... coding testprogrammersalgorithmalgorithm 코딩 테스트 준비-숫자 문자열과 영단어 는 2021년 카카오 채용연계형 인턴십 기출 문제로 프로그래머스 기준으로 레벨 1이었고, 지난번 풀었던 레벨 1 문제 보다는 훨씬 수월하였다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5s... bruteforcecoding testprogrammersJavakakakoJava 코딩 테스트 준비-단어변환 코딩 테스트를 치면서 실무에서 자주 사용하는 해쉬, 문자열 관련 문제들은 비교적 수월하게 풀었지만, 내가 실무에서 자주 사용할 일이 없는 탐색이나 그래프 문제가 나오면 항상 고전을 하였다. 오늘 정리할 코딩 테스트 문제는 프로그래머스의 '단어 변환' 문제로 dfs를 활용해 풀 수 있는 레벨 3 문제였다. 개인적으로 재귀함수를 효과적으로 사용할 수 있다면 어렵지 않게 풀 수 있는 문제였다고 생... JavaDFScoding testprogrammersDFS [ Programmers / CodingTest / Python ] 괄호 변환 '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열이라고 부릅니다. 예를 들어, "(()))("와 같은 문자열은 "균형잡힌 괄호 문자열" 이지만 "올바른 괄호 문자열"은 아닙니다. 반면에 "(())()"와 같은 문자열은 "균형잡힌 괄호 문자열" 이면서 동시에 "올바른 괄호 문자열" 입니다. '(' 와 ')' 로만 이루어진... programmerscoding testpythoncoding test programmers 코딩테스트 : 핸드폰 번호 가리기 핸드폰 번호 가리기 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 phone_number는 길이 4 이상, 20이하인 문자열입니다. 첫번째 풀이... JavaScriptcoding test코딩코딩테스트programmersprogrammers test테스트javascript testJavaScript Dijkstra - BOK 1753 : 최단 경로 정의 하나의 정점에서 나머지 모든 정점까지의 최단 거리를 찾는 알고리즘 이다. 모든 정점의 최단 거리를 구하는 플로이드 워셜 알고리즘과 다른 알고리즘 이다. 예제 출처 : 예제의 입력을 그래프로 표현한 것 입니다. 시작점 1에서 다른 정점들 까지의 거리 중 최단거리에 있는 정점을 찾는 문제입니다. 풀이 1. 시작점 1번에서 직접 갈 수 있는 정점은 2번과 3번입니다. 그리고 문제의 조건에서 ... coding testalgorithmalgorithm [BOJ] 5582 - 공통 부분 문자열 ✔ Problem - - DP 🔰 Level solved.ac 기준 골드5 ❔ How dynamic programming 문제이다. 문자열을 비교하면서, 만약 같은 문자열이 등장하면 길이를 더해줘야 한다. 2차원 배열을 이용해서, 문자열의 인덱스와 배열 인덱스를 이용한다. 같은 문자열이 나오면 해당 dp배열의 오른쪽 아래 대각선 자리에 왼쪽 위 대각선 값에 1을 더한 값을 넣어준다. 문자열의... DP백준coding test골드골드5algorithmboj공통 부분 문자열5582코딩테스트알고리즘5582 [ Programmers / CodingTest / Python ] 크레인 인형뽑기 게임 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음 그림은 [1번, 5번, 3번] 위치에서 순서대로 인형을 집어 올려 바구... python프로그래머스programmers코딩 테스트coding testcoding test [프로그래머스/파이썬] (동적계획법(Dynamic Programming)) 도둑질 문제 설명 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다. 각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요. 제한사항 이 마을에... dynamic programming코테pythonprogrammers프로그래머스카카오코딩테스트코딩파이썬coding test카카오코테코딩테스트도둑질coding test [ Programmers / CodingTest / Python ] 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이... python프로그래머스programmers코딩 테스트coding testcoding test [BOJ] 11726 - 2xn 타일링 Java 풀이 가로의 길이가 n인 타일은 n - 1의 타일짜리에 세로 타일 하나를 붙인 것이거나 n - 2 타일짜리에 가로 타일 2개를 붙인 것과 같기 때문이었다. 즉, 이전에 풀었던 부분문제의 결과를 다시 풀어야 하고, 이것은 메모이제이션 기법으로 저장해두고 꺼내서 쓰면 효율을 높일 수 있다. 이러한 문제들은 전형적인 다이나믹 프로그래밍 문제의 특징이라고 볼 수 있다. 또한 TMI인데, 다이나믹 프로그래... dynamic programmingbojJavaalgorithmcoding testJava LeetCode : Maximum Product Subarray (Medium) 풀이 날짜 : 2021-06-18 풀이 소요 시간 : 30m LeetCode URL : 앞서 풀이한 'Maximum Subarray' 문제와 동일하게 Dynamic Programming 방식을 활용하여 문제를 해결할 수 있습니다. 누적합을 구하는 문제와 달리, 음수 여부에 따라 누적 곱이 달라질 수 있으므로, i번째 Subarray까지 최대/최소 누적 곱을 유지하는 리스트를 생성하여, 비교를... coding testcoding test [ Programmers / CodingTest / Python ] 로또의 최고 순위와 최저 순위 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0, 0, 31 25라고 가정해... python프로그래머스programmers코딩 테스트coding testcoding test [프로그래머스/파이썬] (깊이/너비 우선 탐색(DFS/BFS)) 네트워크 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 ... 코테pythonBFSDFSprogrammers프로그래머스네트워크카카오코딩테스트파이썬coding test카카오코테코딩테스트코딩BFS [BOJ] 15729 - 방탈출 ✔ Problem - - DP 🔰 Level solved.ac 기준 실버1 ❔ How dynamic programming 문제이다. 내가 버튼을 누른 횟수를 출력하면 된다. 앞에서부터 정답과 나의 빈 답지를 비교하며, 눌러 나간다. 먼저 정답 버튼과 길이가 같은 0으로 채워진 새로운 배열을 만들고, 정답과 비교하면서 버튼을 누를 때마다 오른쪽 2개의 버튼도 갱신해주면서 하나씩 눌러나가면 된다... 백준dynamic programmingDPboj15729방탈출실버1실버algorithmcoding test알고리즘코딩테스트15729 2019 카카오 개발자 겨울 인턴십 [크레인 인형뽑기 게임] 모든 인형은 1 x 1 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음 그림은 [1번, 5번, 3번] 위치에서 순서대로 인형을 집어 올려 바구니에... Javaprogrammerskakaocoding testJava